<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
	    xmlns:f="http://java.sun.com/jsf/core"
	    xmlns:h="http://java.sun.com/jsf/html"
	    xmlns:ui="http://java.sun.com/jsf/facelets"
	    xmlns:p="http://primefaces.org/ui"
	    xmlns:pe="http://primefaces.org/ui/extensions"
	    template="/template/template.xhtml">
    
   	<ui:param name="pageTitle" value="Cadastro de Usu&aacute;rio" />
   	
    <ui:define name="body"> 
    	<p:ajaxStatus onstart="statusDialog.show();" onsuccess="statusDialog.hide();"/>  
              
		<p:dialog modal="true" widgetVar="statusDialog" header="Carregando..."   
		          draggable="false" closable="false">  
		    <p:graphicImage value="/resources/images/ajaxloadingbar.gif" />  
		</p:dialog>  
    	<h:form id="formUsuarios">
    			<p:growl id="msgs"/>  
				    <p:panelGrid id="cadastro" columns="2" styleClass="cdtUsuario" style="float:left;"> 
				     
					    <f:facet name="header">  
					        Cadastro de Usu&aacute;rio  
					    </f:facet>  
					  
					    <p:outputLabel for="nome" value="Nome: " />  
			            <p:inputText id="nome" value="#{usuarioController.usuario.nome}" 
			            					   required="true" 
			            					   label="nome"
			            					   requiredMessage="Por favor, digite o nome."
			            					   title="Digite o seu nome."
			            					   maxlength="20"
			            					   > 	
			            					   <p:tooltip for="nome" showEvent="focus" hideEvent="blur" />		   
			            </p:inputText>
			            
			             
			                
			  
			            <p:outputLabel for="login" value="Login: " />  
			            <p:inputText id="login"  value="#{usuarioController.usuario.login}" 
			            						 label="login" 
			            						 required="true"
			            						 requiredMessage="Por favor, digite o login."
			            						 title="Digite o seu login."
			            						 > 
			            						<p:tooltip for="login" showEvent="focus" hideEvent="blur" />
			            </p:inputText>
			            
			            <p:outputLabel for="senha" value="Senha: " />  
			            <p:password id="senha"  
			            			 value="#{usuarioController.usuario.senha}" 
			            			 feedback="true"
			            			 label="senha" 
			            			 required="true"
			            			 promptLabel="Digite uma senha." 
			            			 weakLabel="Fraca"
			            			 goodLabel="Boa" 
			            			 strongLabel="Forte"
			            			 requiredMessage="Por favor, digite a senha.">
			         	</p:password>	
			         	
			         	<p:selectOneRadio value="#{usuarioController.usuario.cpfcnpj}" 
			         					  rendered="#{usuarioController.btCadastro == true}"
			         					  >      
	                         <f:selectItem itemLabel="CNPJ" itemValue="CNPJ" />   
	                         <f:selectItem itemLabel="CPF : *" itemValue="CPF" />   
	                         <p:ajax event="change" update=":formUsuarios:mascaraTipoDocumento"/>                   
                        </p:selectOneRadio>    
                        <p:outputLabel rendered="#{not empty usuarioController.usuario.cpfcnpj}"
                            			   value="CPF / CNPJ : *"></p:outputLabel>   
                        <h:panelGroup id="mascaraTipoDocumento">  
                            <p:inputMask  rendered="#{usuarioController.usuario.cpfcnpj eq 'CNPJ'}" 
                            			  mask="99.999.999/9999-99" 
                            			  id="cnpj"
                            			  title="Digite um CNPJ."
                            			  value="#{usuarioController.usuario.cpfcnpj}" /> 
                            <p:tooltip for="cnpj" showEvent="focus" hideEvent="blur" />   
                            <p:inputMask  rendered="#{usuarioController.usuario.cpfcnpj eq 'CPF'}" 
                            			  mask="999.999.999-99" 
                            			  id="cpf"
                            			  title="Digite um CPF."
                            			  value="#{usuarioController.usuario.cpfcnpj}" /> 
                            <p:tooltip for="cpf" showEvent="focus" hideEvent="blur" />
                             
                            <p:inputText rendered="#{usuarioController.btSalvar == true}"
                            			 value="#{usuarioController.usuario.cpfcnpj}"
                            			 readonly="true"
                            			 title="Este campo n&atilde;o pode ser alterado."
                            			 id="cpfcnpjalterado">
                            			 <p:tooltip for="cpfcnpjalterado" showEvent="focus" hideEvent="blur" />
                            </p:inputText> 
                        </h:panelGroup> 
                        	            
			             
			            <p:outputLabel for="endereco" value="Endere&ccedil;o: " />  
			            <p:inputText id="endereco"  value="#{usuarioController.usuario.endereco}" 
			            						    label="endereco" 
			            						    required="true"
			            						    requiredMessage="Por favor, digite o endere&ccedil;o."
			            						    title="Digite o seu endere&ccedil;o.">
			       									<p:tooltip for="endereco" showEvent="focus" hideEvent="blur" /> 
			            </p:inputText>  
			            
			            <p:outputLabel for="telefone" value="Telefone: " />  
			            <p:inputMask id="telefone"
			            			 value="#{usuarioController.usuario.telefone}" 
			            			 mask="(99) 9999-9999"
			            			 label="telefone" 
			            			 required="true"
			            			 requiredMessage="Por favor, digite o telefone." 
			            			 title="Digite o seu telefone.">
			            			<p:tooltip for="telefone" showEvent="focus" hideEvent="blur" />
			            </p:inputMask> 
			            
			            <p:outputLabel for="email" value="E-mail: " />  
			            <p:inputText id="email"  value="#{usuarioController.usuario.email}" 
			            						 label="email" 
			            						 required="true"
			            						 requiredMessage="Por favor, digite o e-mail."
			            						 title="Digite o seu e-mail."
			            						 validatorMessage="Formato de e-mail invalido.">
			         	<f:validateRegex
						pattern="^[_A-Za-z0-9-\+]+(\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\.[A-Za-z0-9]+)*(\.[A-Za-z]{2,})$" />
			          	<p:tooltip for="email" showEvent="focus" hideEvent="blur" />  
			            </p:inputText>  
			            
			            <p:outputLabel for="cbPerfil" value="Perfil: " />
			            <p:selectOneMenu id="cbPerfil" value="#{usuarioController.usuario.perfil}">  
			                <f:selectItem itemLabel="Selecione um Perfil" itemValue="0" />  
			                <f:selectItems value="#{perfilController.perfis}"
					    				   var="_perfil" 
					    				   itemValue="#{_perfil}"
					    				   itemLabel="#{_perfil.descricao}"  />
			            </p:selectOneMenu>   
					  
					    <f:facet name="footer">    
					    	<p:commandButton value="Cadastrar" 
					    					 update=":formUsuarios:usuarios, :formUsuarios:msgs, :formUsuarios:cadastro, @parent"  
                							 action="#{usuarioController.salvar}"   
                							 id="btnGlobal"
                							 icon="ui-icon-check"
                							 rendered="#{usuarioController.btCadastro == true}">
	                			<p:collector value="#{usuarioController.usuario}"   
	                            			 addTo="#{usuarioController.usuarios}" />
                			</p:commandButton>
              					<p:commandButton value="Salvar" 
					    					 update="usuarios cadastro msgs @parent"  
                							 action="#{usuarioController.alterarUsuario()}"
                							 id="btnGlobalSalvar"
                							 icon="ui-icon-check"
                							 rendered="#{usuarioController.btSalvar == true}"
                							  />
                			<p:commandButton value="Cancelar" 
                							 update="cadastro" 
                							 process="@this" 
                							 actionListener="#{usuarioController.limpar}"
                							 icon="ui-icon-cancel"/>
					    </f:facet>  
					</p:panelGrid> 
					<p:outputPanel id="usuarios">
				     	<p:dataTable id="tbUsuarios" 
				     				 var="_usuario" 
				     				 value="#{usuarioController.usuarios}" 
				     				 style="float:left;margin-left:10px;"
				     				 emptyMessage="Nenhum usuario cadastrado."
				     				 editable="true"
				     				 paginator="true" rows="5"  
                            		 paginatorTemplate="{PageLinks}"
				     				 selection="#{usuarioController.selecionado}" selectionMode="single"  
		                             rowKey="#{_usuario.idUsuario}"
				     				 >
				     				 
				     		<p:ajax event="rowSelect" listener="#{usuarioController.onRowSelect}" update=":formUsuarios:cadastro"/>				 
			     			
			     			<p:growl id="msgstb"/> 
			     			<f:facet name="header">  
				            	Usu&aacute;rios Cadastrados 
					        </f:facet>  
					  
					        <p:column headerText="Nome" width="220" filterMatchMode="contains" filterBy="#{_usuario.nome}" >
					            	<h:outputText value="#{_usuario.nome}" />
					        </p:column>
					        
					        <p:column headerText="Login" width="100" filterMatchMode="contains" filterBy="#{_usuario.login}" >
					            	<h:outputText value="#{_usuario.login}" />  
					        </p:column>    
					  
					        <p:column headerText="CPF/CNPJ" width="85" filterMatchMode="contains" filterBy="#{_usuario.cpfcnpj}" >
					            	<h:outputText value="#{_usuario.cpfcnpj}" /> 
					        </p:column>					        		  
					        <f:facet name="footer">  
					           <p:commandButton id="selectButton" 
				                				 update=":formUsuarios:displayUser" 
				                				 oncomplete="userDialog.show();" 
				                				 icon="ui-icon-search" 
				                				 title="Ver Detalhes"
				                				 value="Ver Detalhes"
				                				 >  
					                <f:setPropertyActionListener value="#{_usuario}" 
					                							 target="#{usuarioController.selecionado}"
																 /> 
																
					            </p:commandButton>
					            <p:commandButton 
					            			   title="Excluir Usu&aacute;rio"
					            			   update=":formUsuarios:usuarios, :formUsuarios:msgs, :formUsuarios:cadastro" 
					            			   process=":formUsuarios:usuarios"
					            			   action="#{usuarioController.excluirUsuario()}"
					            			   icon="ui-icon-trash"
					            			   value="Excluir Usu&aacute;rio"
					            			   >  
				                    <p:collector value="#{_usuario}"  
				                                 removeFrom="#{usuarioController.usuarios}" />  
				                </p:commandButton>
					        </f:facet> 
					    </p:dataTable>
					</p:outputPanel>
					
					
					<p:dialog header="Detalhes do Usu&aacute;rio" 
					    		  widgetVar="userDialog" 
					    		  resizable="false" 
					    		  id="userDialog"  
                				  showEffect="fade" 
                				  onHide="#{usuarioController.limpar()}"
                				  hideEffect="explode" modal="true">  
  
					        <h:panelGrid id="displayUser" columns="2" cellpadding="4" style="margin:0 auto;">  
					  
					            <f:facet name="header">  
					                 
					            </f:facet>  
					  
					            <h:outputText value="Nome:" />  
					            <h:outputText value="#{usuarioController.selecionado.nome}" style="font-weight:bold"/>  
					            
					            <h:outputText value="Login:" />  
					            <h:outputText value="#{usuarioController.selecionado.login}" style="font-weight:bold"/> 
					            
					            <h:outputText value="CPF/CNPJ:" />  
					            <h:outputText value="#{usuarioController.selecionado.cpfcnpj}" style="font-weight:bold"/>   
					  
					            <h:outputText value="Endere&ccedil;o:" />  
					            <h:outputText value="#{usuarioController.selecionado.endereco}" style="font-weight:bold"/>  
					  			
					  			<h:outputText value="Senha" />  
					            <h:outputText value="#{usuarioController.selecionado.senha}" style="font-weight:bold"/>  
					  
					            <h:outputText value="Telefone:" />  
					            <h:outputText value="#{usuarioController.selecionado.telefone}" style="font-weight:bold"/>  
					  
					            <h:outputText value="Tipo de Usu&aacute;rio:" />  
					            <h:outputText value="#{usuarioController.selecionado.perfil.descricao}" style="font-weight:bold"/>  
					  			
					        </h:panelGrid>  
					  
					    </p:dialog>
			</h:form>
			
    </ui:define>
</ui:composition>